今天想發ARM的文章時,居然一直遇到這個畫面:
雖然不確定是不是被攻擊了,但後來還好可以連上主頁了,這感覺的確是有些驚險! 資安越來越重要,如果因此而無法準時發文,應該會徒呼負負吧!
我們討論一下任務(task)的結構形式,最典型的任務分成兩種,一種是執行到完成(run-to-completion);另一種的就是無限循環。
最常見的執行到完成的任務,就是用在初始化階段,這也是最常見的一種樣態,這種任務形態比較不會有搶占的問題,我們也可以在後面附加,如果執行完畢就自行刪除或中止。
虛擬碼的表達方式如下:
RunToCompletionTask() 執行到完成任務
{
Initialize application 初始化應用
Create ‘endless loop tasks’ 創立’無限循環的任務’
Create kernel objects 創立核心物件
Delete or suspend this task 刪除或中止這個任務
}
無限循環,簡單說,就是僅在初始化時,任務被執行,之後就一直重複,虛擬碼表達方式如下:
EndlessLoopTask()
{
Initialization code
Loop Forever
{
Body of loop
Make one or more blocking calls
}
}
上述的Make one or more blocking calls,意思是呼叫一個或多個凍結,就是可以凍結到任務,讓優先權較低任務可以執行的意思。
以上就大致簡略說明一下任務的兩種典型的模式。